package com.zan.zanchat.common.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * @Author Zan
 * @Create 2024/3/17 14:57
 * @Description : 自定义分布式锁注解
 */
@Retention(RetentionPolicy.RUNTIME) // 在运行时生效
@Target(ElementType.METHOD) // 作用在方法上
public @interface RedissonLock {

    /**
     * key的前缀，默认取方法全限定名，可以自己指定
     */
    String prefixKey() default "";

    /**
     * 支持SpringEl表达式的key
     */
    String key();

    /**
     * 等待锁的排队时间，默认快速失败，默认-1就是不等待
     */
    int waitTime() default -1;

    /**
     * 等待时间单位，默认毫秒
     */
    TimeUnit unit() default TimeUnit.MILLISECONDS;

}
